home *** CD-ROM | disk | FTP | other *** search
- /*
- MDICHILD.CPP - (C) 1990 by Joachim Kainz 'On a mission from Bhudda'
- */
- #include "mdi.hpp"
- #include <string.h>
-
- EXPORT MDICHILD::MDICHILD (
- LPSTR lpName,
- HICON hIcon,
- int x,
- int y,
- int cx,
- int cy,
- long lStyle,
- long lParam,
- LPSTR lpClass
- ) : WINDOW (
- CS_VREDRAW | CS_HREDRAW,
- LoadCursor (NULL, IDC_ARROW),
- hIcon,
- COLOR_WINDOW+1,
- 0,
- 0,
- lpClass,
- DefMDIChildProc
- )
- {
- MDICREATESTRUCT mdi;
- LPSTR lpTitle;
-
- if (HIWORD (lpName))
- lpTitle = _fstrdup (lpName);
-
- else
- for (WORD wLen=64;; wLen*=2) {
-
- lpTitle = new char [wLen];
-
- if (
- LoadString (
- GetInstance (),
- LOWORD (lpName),
- lpTitle,
- wLen
- ) < wLen-1
- )
- break;
-
- delete lpTitle;
-
- }
-
- mdi.szClass = lpClass;
- mdi.szTitle = lpTitle;
- mdi.hOwner = GetInstance ();
- mdi.x = x;
- mdi.y = y;
- mdi.cx = cx;
- mdi.cy = cy;
- mdi.style = lStyle;
- mdi.lParam = lParam;
-
- hWnd = (HWND) ::SendMessage (
- MDI::GetMDIClient (),
- WM_MDICREATE,
- NULL,
- (long) &mdi
- );
-
- delete lpTitle;
-
- if (!GetWindowHandle ())
- return;
-
- SetWindowLong (GetWindowHandle (), 0, (long) this);
-
- lpDefWndProc =
- (FARPROC2) SetWindowLong (
- GetWindowHandle (),
- GWL_WNDPROC,
- (long) GetOOPWndProc ()
- );
-
- SendMessage (self, WM_CREATE, NULL, (long) &mdi);
- }
-
- METHOD MDICHILD::WMChildActivate ()
- {
- return DefMDIChildProc (
- GetWindowHandle (),
- WM_CHILDACTIVATE,
- NULL,
- 0l
- );
- }
-
- METHOD MDICHILD::WMMove (POINT pt)
- {
- return DefMDIChildProc (
- GetWindowHandle (),
- WM_MOVE,
- NULL,
- *(long *) &pt
- );
- }
-
- METHOD MDICHILD::WMGetMinMaxInfo (LPRECT lprt)
- {
- return DefMDIChildProc (
- GetWindowHandle (),
- WM_GETMINMAXINFO,
- NULL,
- (long) lprt
- );
- }
-
- METHOD MDICHILD::WMMenuChar (WORD wKey, HMENU hMenu, WORD wMenu)
- {
- return DefMDIChildProc (
- GetWindowHandle (),
- WM_MENUCHAR,
- wKey,
- MAKELONG (wMenu, hMenu)
- );
- }
-
- METHOD MDICHILD::WMSetFocus (HWND hLast)
- {
- return DefMDIChildProc (GetWindowHandle (), WM_SETFOCUS, hLast, 0l);
- }
-
- METHOD MDICHILD::WMSize (WORD wSizing, int nWidth, int nHeigth)
- {
- return DefMDIChildProc (
- GetWindowHandle (),
- WM_SIZE,
- wSizing,
- MAKELONG (nWidth, nHeigth)
- );
- }
-
- METHOD MDICHILD::WndMdiProc (WORD wMsg, WORD wParam, long lParam)
- {
- switch (wMsg) {
-
- case WM_PARENTNOTIFY:
- return WMParentNotify (
- HIWORD (lParam),
- wParam,
- LOWORD (lParam)
- );
-
- case WM_MDIACTIVATE:
- return WMMDIActivate (
- wParam,
- HIWORD (lParam),
- LOWORD (lParam)
- );
-
- }
-
- return DefMDIChildProc (GetWindowHandle (), wMsg, wParam, lParam);
- }
-
- METHOD MDICHILD::WndDlgProc (WORD wMsg, WORD wParam, long lParam)
- {
- switch (wMsg) {
-
- case WM_COMMAND:
- return WMCommand (
- wParam,
- HIWORD (lParam),
- LOWORD (lParam)
- );
-
- case WM_SYSCOMMAND:
- return WMSysCommand (wParam, MAKEPOINT (lParam));
-
- case WM_TIMER:
- return WMTimer (wParam, (FARPROC) lParam);
-
- case WM_HSCROLL:
- return WMHScroll (wParam, HIWORD (lParam));
-
- case WM_VSCROLL:
- return WMVScroll (wParam, HIWORD (lParam));
-
- case WM_INITMENU:
- return WMInitMenu (wParam);
-
- case WM_INITDIALOG:
- return WMInitDialog (lParam);
-
- case WM_INITMENUPOPUP:
- return WMInitMenuPopUp (
- wParam,
- LOWORD (lParam),
- HIWORD (lParam)
- );
-
- case WM_MENUSELECT:
- return WMMenuSelect (wParam, LOWORD (lParam));
-
- case WM_MENUCHAR:
- return WMMenuChar (
- wParam,
- HIWORD (lParam),
- LOWORD (lParam)
- );
-
- case WM_ENTERIDLE:
- return WMEnterIdle (wParam, LOWORD (lParam));
-
- }
-
- return DefMDIChildProc (GetWindowHandle (), wMsg, wParam, lParam);
- }
-
- METHOD MDICHILD::WMSysCommand (WORD wID, POINT pt)
- {
- return DefMDIChildProc (
- GetWindowHandle (),
- WM_SYSCOMMAND,
- wID,
- *(long*)&pt
- );
- };
-
- METHOD MDICHILD::WMSetText(LPSTR lpText)
- {
- return DefMDIChildProc(GetWindowHandle (), WM_SETTEXT, NULL, (long) lpText);
- }
-
- METHOD MDICHILD::WMMenuSelect (WORD wMenu, WORD wFlag)
- {
- return DefMDIChildProc(
- GetWindowHandle (),
- WM_MENUSELECT,
- wMenu,
- MAKELONG (wFlag, NULL)
- );
- }
-
- METHOD MDICHILD::WMClose ()
- {
- return SendMessage (
- MDI::GetMDIClient (),
- WM_MDIDESTROY,
- GetWindowHandle (),
- 0l
- );
- }
-